![SORACOM LTE-M Button + Amazon ConnectでSOSコールボタン的なものを作る](https://devio2023-media.developers.io/wp-content/uploads/2019/01/soracom_logo.png)
SORACOM LTE-M Button + Amazon ConnectでSOSコールボタン的なものを作る
はじめに
最近、SORACOM LTE-M Button powered by AWS(以下、LTE-M Button)を買いました。 (発売当初のキャンペーンに乗り遅れたのは私です…)
せっかく「#あのボタン」を手に入れたので、色々と活用してみたいところです。
今回は、LTE-M ButtonとAmazon Connect(以下、Connect)を組み合わせて、サクッと緊急SOSコールボタン的なものを作ってみました。 ボタンを押すと、特定の電話番号にコールして通話先にSOSであることを知らせます。
構成
構成は以下のような感じです。
SOSを出したい時にLTE-M Buttonを押すと、連携されたLambdaでConnectのAPIを叩き、指定先の電話番号に発信して自動音声にて緊急事態である旨を伝えます。
Amazon Connectの準備
電話を発信するにあたり、まずはConnect(東京リージョン)で問い合わせフローを準備します。 Connectを初めて触る場合は、以下などを参考にしてインスタンスと発信可能な電話番号を取得しておいてください。
それでは、問い合わせフローを作成してみます。 以下のように、SOSであることをTakumiさんから通話先へ伝えてもらいます。
作成後、「保存して発行」するのを忘れずに。
Lambdaの実装
次に、LTE-M Buttonと連携するLambdaの実装です。
LambdaではConnectのAPIを利用するので、IAMロールで以下のリソースにアクセスできるようにポリシーを設定しておいて下さい。
- connect:StartOutboundVoiceContact
Lambdaのコード(Node.js 8.10)は以下です。
'use strict'; const AWS = require('aws-sdk'); AWS.config.update({ region: 'ap-northeast-1' }); const connect = new AWS.Connect(); const params = { ContactFlowId: process.env.CONNECT_CONTACT_FLOW_ID, DestinationPhoneNumber: process.env.DEST_PHONE_NUMBER, InstanceId: process.env.CONNECT_INSTANCE_ID, SourcePhoneNumber: process.env.SOURCE_PHONE_NUMBER }; exports.handler = async (event) => { console.log(JSON.stringify(event)); try { const res = await connect.startOutboundVoiceContact(params).promise(); console.log(res); } catch(err) { console.error(err); } };
パラメータ部分(環境変数)には、以下の値を設定します。
変数名 | 説明 | 例 |
---|---|---|
CONNECT_CONTACT_FLOW_ID | 先程作成した問い合わせフローのID | (下記参照) |
DEST_PHONE_NUMBER | 発信先(SOS先)の電話番号 | +819011112222 |
CONNECT_INSTANCE_ID | ConnectインスタンスのID | (下記参照) |
SOURCE_PHONE_NUMBER | 発信元の電話番号 | +818003334444 |
ConnectインスタンスのIDは、インスタンスARNから取得することができます。
問い合わせフローのIDは、問い合わせフローエディタから取得することができます。 (インスタンスARNも記載されているので、ConnectインスタンスIDもこちらから取得できます。)
AWS IoT 1-Clickアプリでデバイスの登録
次に、LTE-M ButtonをAWS IoT 1-Clickに登録します。
今回は、AWS IoT 1-Click モバイルアプリ(iOS or Android)を利用してデバイスの登録をしてみます。
アプリを起動すると、 まずAWSアカウントでログインします。 その後、「デバイスIDの登録」でLTE-M Buttonを登録します。
「スキャン」を選択します。
デバイスIDは、本体のQRコードから読み取ることができます。 本体裏の蓋を開けたところに記載されていますので、スキャンします。 (うまくスキャンできない場合は、記載されているDSNを直接入力することもできます)
デバイスが追加されたら、「登録」を選択します。
次に、LTE-M Buttonのボタンをクリックして登録を完了します。 (登録成功した場合、登録:成功と表示されます)
AWS IoT 1-ClickでデバイスとLambdaの関連付け
最後に、AWSコンソールのAWS IoT 1-ClickでLTE-M Buttonと実装したLambdaを関連付けます。 「プロジェクトの作成」を選択します。
適当なプロジェクト名を設定して「次へ」。
デバイステンプレートでは、「すべてのボタンタイプ」を選択します。
デバイステンプレート名に適当な名前を設定し、アクションで「Lambda関数の選択」を選択します。 AWSリージョンとLambda関数に先程実装したLambdaファンクションを指定し、「プロジェクトの作成」を選択します。
プロジェクト作成後、続けてプレイスメントの作成を行います。
適当なプレイスメント名を設定の上、先程設定したデバイステンプレートを選択し、「プレイスメントの作成」を選択します。
以上で各種設定は完了です! 実際にLTE-M Buttonを押して動作を確認してみましょう。
ボタンを押してSOS出してみる
おわりに
SORACOM LTE-M ButtonとAmazon Connectを組み合わせて、SOSコールボタン的なものを作ってみました。 LTE-M ButtonはAWS IoT Enterprise Buttonと違ってWi-Fiに繋ぐ必要がなく、気軽に外へ持ち出せるので、様々なユースケースに応用できそうですね。
それでは。